package main

import (
	"fmt"
	"net"
)

func main3() {
	// 将本地IP 127.0.0.1，以及端口号1888，包装为一个UDPAddr对象
	localAddress := &net.UDPAddr{IP: net.ParseIP("127.0.0.1"), Port: 1888}

	// 以UDP协议进入监听，当有客户端消息到达时，将创建一个conn对象
	conn, err := net.ListenUDP("udp", localAddress)
	if err != nil {
		fmt.Printf("监听错误: %s", err)
		return
	}

	defer conn.Close()

	data := make([]byte, 1024)
	for {
		// conn中读取数据到字节切片data中
		n, remoteAddr, err := conn.ReadFromUDP(data)
		if err != nil {
			fmt.Printf("读取消息异常: %s", err)
		}

		// 打印消息来源，以及消息内容
		fmt.Printf("消息来源：%s， 消息内容：%s\n", remoteAddr, data[:n])

		// 尝试利用conn向对端发送消息"world"
		_, err = conn.Write([]byte("world"))
		if err != nil {
			fmt.Printf("发送消息异常: %v", err)
		}
	}
}
